/**
 * 
 */
package com.maohi.software.arii.mvc;

import java.util.List;

import com.maohi.software.arii.mvc.listeners.UIListener;

/**
 * @author heifara
 * 
 */
public interface UI<C> {

	/**
	 * Add a {@link UIListener}
	 * 
	 * @param aListener
	 *            the listener to add
	 */
	public void addUIListener(UIListener aListener);

	/**
	 * Return the list of {@link UIListener}
	 * 
	 * @return the list
	 */
	public List<UIListener> getUIListeners();

	/**
	 * Open the UI
	 * 
	 * @param aController
	 *            the controller
	 */
	public void openUI(C aController);

	/**
	 * Remove a {@link UIListener}
	 * 
	 * @param aListener
	 *            the listener to remove
	 */
	public void removeUIListener(UIListener aListener);

}
